跳到主要内容

获取签名

示例:http://oapi.xt.com/api/v1/public/symbol/detail?symbol=btc_usdt

以下是在 Linux bash 环境中使用 echo opensslcurl 工具调用下单接口的示例。Appkey、secret 仅用于演示目的:

  • appKey: 3976eb88-76d0-4f6e-a6b2-a57980770085
  • secretKey: bc6630d0231fda5cd98794f52c4998659beda290

部分 Header 数据

validate-appkey: 3976eb88-76d0-4f6e-a6b2-a57980770085
validate-timestamp: 1641446237201
validate-algorithms: HmacSHA256

请求数据

{
"type": "LIMIT",
"timeInForce": "GTC",
"side": "BUY",
"symbol": "btc_usdt",
"price": "39000",
"quantity": "2"
}

1. 数据拼接规则

  • path:按照 path 中的顺序拼接所有值。示例:/sign/test/bb/aa

  • query:按 key 的字典序排序所有 key=value。示例:userName=dfdfdf&password=ggg

  • body

    • JSON:直接使用 JSON 字符串。
    • x-www-form-urlencoded:按 key 的字典序排序所有 key=value。
    • form-data:不支持。

如果存在多种数据形式,按以下顺序拼接:path → query → body

示例

  • Path 示例

    /future/api/v1/public/symbol/detail
  • Query 示例

    symbol=btc_usdt&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1
  • Body (JSON) 示例

    {
    "symbol": "btc_usdt",
    "side": "BUY",
    "type": "LIMIT",
    "timeInForce": "GTC",
    "quantity": 2,
    "price": 39000
    }
  • Body (x-www-form-urlencoded) 示例

    symbol=btc_usdt&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1
  • Query + Body 混合示例

    query: symbol=btc_usdt&side=BUY&type=LIMIT&timeInForce=GTC
    body: {"quantity":2,"price":39000}

最终规则

Y = #path#query#body
  • 仅有 query:Y=#path#query
  • 仅有 body:Y=#path#body
  • 同时有 query 和 body:Y=#path#query#body

2. 请求头拼接

按字母自然升序排列后,用 & 连接各个 key:

X = validate-appkey=3976eb88-76d0-4f6e-a6b2-a57980770085&validate-timestamp=1641446237201

3. 生成签名

最终需要加密的字符串:

sign = XY

加密方法:

signature = org.apache.commons.codec.digest.HmacUtils.hmacSha256Hex(secretkey, sign);

将生成的签名放入请求头:

validate-signature: {signature}